Charger 28 Click
Charger 28 Click demo application is developed using the NECTO Studio, ensuring compatibility with mikroSDK's open-source libraries and tools. Designed for plug-and-play implementation and testing, the demo is fully compatible with all development, starter, and mikromedia boards featuring a mikroBUS™ socket.
Click Library
- Author : Stefan Filipovic
- Date : Nov 2024.
- Type : I2C type
Software Support
Example Description
This example demonstrates the use of the Charger 28 Click board by monitoring various parameters of the charging system, such as input voltage (VBUS), battery voltage (VBAT), system voltage (VSYS), charging current (IBAT), and chip temperature (TDIE). Additionally, it reads and interprets the charger status and fault registers to provide detailed status and error feedback during operation.
Example Libraries
- MikroSDK.Board
- MikroSDK.Log
- Click.Charger28
Example Key Functions
- charger28_cfg_setup Config Object Initialization function.
void charger28_cfg_setup(charger28_cfg_t *cfg)
Charger 28 configuration object setup function.
Charger 28 Click configuration object.
Definition charger28.h:372
- charger28_init Initialization function.
err_t charger28_init(charger28_t *ctx, charger28_cfg_t *cfg)
Charger 28 initialization function.
Charger 28 Click context object.
Definition charger28.h:350
- charger28_default_cfg Click Default Configuration function.
err_t charger28_default_cfg(charger28_t *ctx)
Charger 28 default configuration function.
- charger28_get_vbus This function reads and calculates the bus voltage in millivolts.
err_t charger28_get_vbus(charger28_t *ctx, uint16_t *vbus)
Charger 28 get bus voltage function.
- charger28_get_ibus This function reads and calculates the input current in milliamperes.
err_t charger28_get_ibus(charger28_t *ctx, float *ibus)
Charger 28 get input current function.
- charger28_get_vbat This function reads and calculates the battery voltage in millivolts.
err_t charger28_get_vbat(charger28_t *ctx, float *vbat)
Charger 28 get battery voltage function.
Application Init
Initializes the driver and performs the default configuration of the Charger 28 Click by disabling charging, resetting registers, disabling the TS pin, configuring the ADC, and re-enabling charging.
{
log_cfg_t log_cfg;
LOG_MAP_USB_UART( log_cfg );
log_init( &logger, &log_cfg );
log_info( &logger, " Application Init " );
if ( I2C_MASTER_ERROR ==
charger28_init( &charger28, &charger28_cfg ) )
{
log_error( &logger, " Communication init." );
for ( ; ; );
}
{
log_error( &logger, " Default configuration." );
for ( ; ; );
}
log_info( &logger, " Application Task " );
}
@ CHARGER28_ERROR
Definition charger28.h:393
#define CHARGER28_MAP_MIKROBUS(cfg, mikrobus)
MikroBUS pin mapping.
Definition charger28.h:334
void application_init(void)
Definition main.c:53
#define MIKROBUS_POSITION_CHARGER28
Definition main.c:37
Application Task
Periodically retrieves and logs charging parameters such as input voltage, battery voltage, system voltage, charging current, and temperature. The application also reads the status and fault registers to determine the current charging state and logs the information for debugging or monitoring purposes.
{
float ibus = 0, vbat = 0, vsys = 0, adcin = 0, tdie = 0;
uint8_t status_0 = 0, status_1 = 0, fault = 0;
uint16_t vbus = 0, vpmid = 0;
int16_t ibat = 0;
{
log_printf ( &logger, "\r\n VBUS: %u mV\r\n", vbus );
}
{
log_printf ( &logger, " IBUS: %.1f mA\r\n", ibus );
}
{
log_printf ( &logger, " VBAT: %.2f mV\r\n", vbat );
}
{
log_printf ( &logger, " IBAT: %d mA\r\n", ibat );
}
{
log_printf ( &logger, " VSYS: %.2f mV\r\n", vsys );
}
{
log_printf ( &logger, " VPMID: %u mV\r\n", vpmid );
}
{
log_printf ( &logger, " ADCIN: %.2f mV\r\n", adcin );
}
{
log_printf ( &logger, " TDIE: %.1f degC\r\n", tdie );
}
{
log_printf ( &logger, " Status 0: 0x%.2X\r\n", ( uint16_t ) status_0 );
}
{
log_printf ( &logger, " Status 1: 0x%.2X\r\n", ( uint16_t ) status_1 );
charger28_parse_charge_status ( status_1 );
}
{
log_printf ( &logger, " Fault: 0x%.2X\r\n", ( uint16_t ) fault );
}
Delay_ms ( 1000 );
}
@ CHARGER28_OK
Definition charger28.h:392
#define CHARGER28_REG_CHARGER_STATUS_0
Definition charger28.h:93
#define CHARGER28_REG_FAULT_STATUS
Definition charger28.h:95
#define CHARGER28_REG_CHARGER_STATUS_1
Definition charger28.h:94
err_t charger28_get_ibat(charger28_t *ctx, int16_t *ibat)
Charger 28 get battery current function.
err_t charger28_get_tdie(charger28_t *ctx, float *tdie)
Charger 28 get die temperature function.
err_t charger28_get_adcin(charger28_t *ctx, float *adcin)
Charger 28 get ADC input function.
err_t charger28_read_reg_byte(charger28_t *ctx, uint8_t reg, uint8_t *data_out)
Charger 28 read single register byte function.
err_t charger28_get_vpmid(charger28_t *ctx, uint16_t *vpmid)
Charger 28 get PMID voltage function.
err_t charger28_get_vsys(charger28_t *ctx, float *vsys)
Charger 28 get system voltage function.
void application_task(void)
Definition main.c:89
Note
The application is designed to continuously monitor the charging system, providing real-time feedback on its operation. The detailed charge status parsing includes states such as "Not Charging", "Trickle Charge", "Fast Charge", and "Charge Done", among others, to help track the charging process.
Application Output
This Click board can be interfaced and monitored in two ways:
- Application Output - Use the "Application Output" window in Debug mode for real-time data monitoring. Set it up properly by following this tutorial.
- UART Terminal - Monitor data via the UART Terminal using a USB to UART converter. For detailed instructions, check out this tutorial.
Additional Notes and Information
The complete application code and a ready-to-use project are available through the NECTO Studio Package Manager for direct installation in the NECTO Studio. The application code can also be found on the MIKROE GitHub account.